import axios, {
  AxiosInstance,
  AxiosResponse,
  InternalAxiosRequestConfig,
} from 'axios'
import {useUserStore} from '@/store/user'
import { ElNotification } from 'element-plus'
const axiosInstance: AxiosInstance = axios.create({
  baseURL: 'http://localhost:9009/',
  timeout: 5000,
})
// 添加请求拦截器
axiosInstance.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    console.log("before request")
    // 在发送请求之前做些什么
    // 如果token在本地存在的话
    // 每个请求都需要加上authorization
    if (useUserStore().userInfo?.token != "") {
      config.headers["Authorization"] = useUserStore().userInfo.token
    }
    return config
  },
  (error: any) => {
    // 处理请求错误
    console.log(error)
    return Promise.reject(error)
  }
)
// 添加响应拦截器
axiosInstance.interceptors.response.use(
  (response: AxiosResponse) => {
    const res = response.data
    if (res.code !== 0) {
      ElNotification.error({
        title: '错误',
        message: res.msg || '网络错误，请稍后重试',
      })
      return Promise.reject(res)
    } else {
      return res
    }
  },
  (error) => {
    console.log(error) // for debug
    const errContent = error.response
    // const staffStore = useStaffStore()
    if (errContent?.status === 401) {
      ElNotification.error({
        title: '错误',
        message: errContent.data.msg,
      })

      // staffStore.logOut()
      return Promise.reject(error)
    } else {
      ElNotification.error({
        title: '错误',
        message: errContent?.data?.msg || '网络错误，请稍后重试',
      })
      return Promise.reject(error)
    }
  }
)
export default axiosInstance
// import axios from 'axios'
// import {getToken} from '@/utils/auth'
// import { ElNotification } from 'element-plus'

// // create an axios instance
// const service = axios.create({
//   headers: {
//     'Content-Type': 'application/x-www-form-urlencoded',
//   },
//   timeout: 20000, // request timeout
// })

// service.interceptors.request.use(
//   (config) => {
//     const staffStore = useStaffStore()
//     config.baseURL = import.meta.env['VITE_APP_BASE_PREFIX']

//     if (staffStore.token) {
//       config.headers['x-authorization'] = 'Bearer ' + getToken()
//     }
//     return config
//   },
//   (error) => {
//     console.log(error) // for debug
//     return Promise.reject(error)
//   }
// )

// service.interceptors.response.use(
//   (response) => {
//     const staffStore = useStaffStore()
//     const res = response.data
//     if (res.code === 401) {
//       ElNotification.error({
//         title: '错误',
//         message: res.msg,
//       })

//       staffStore.logOut()
//       return Promise.reject(res)
//     } else if (res.code !== 200) {
//       ElNotification.error({
//         title: '错误',
//         message: res.msg || '网络错误，请稍后重试',
//       })
//       return Promise.reject(res)
//     } else {
//       return res
//     }
//   },
//   (error) => {
//     console.log(error) // for debug
//     const errContent = error.response
//     const staffStore = useStaffStore()
//     if (errContent?.status === 401) {
//       ElNotification.error({
//         title: '错误',
//         message: errContent.data.msg,
//       })

//       staffStore.logOut()
//       return Promise.reject(error)
//     } else {
//       ElNotification.error({
//         title: '错误',
//         message: errContent?.data?.msg || '网络错误，请稍后重试',
//       })
//       return Promise.reject(error)
//     }
//   }
// )

// export default service
